/* *
* 前端设计模式中的命令模式是一种行为型模式，它将一个请求封装为一个对象，从而使得请求的发送者和接收者可以解耦。命令模式中的请求对象包含了执行请求所需的所有信息，包括请求的接收者、请求所需的参数等。这些请求对象可以被队列、记录日志等，也可以被撤销和重做。
* 命令模式有以下几个角色：
* - Command：定义了所有具体命令的接口，包括 execute 和 undo 方法。
* - ConcreteCommand：实现了 Command 接口，包含了命令的具体实现逻辑。
* - Receiver：命令的接收者，负责执行具体操作。
* - Invoker：调用者，负责通过 Command 对象来执行请求。
* - Client：客户端，负责创建 ConcreteCommand 对象，并将它们关联到相应的 Receiver 上，同时也可以将它们组成命令队列、记录日志等。
* */
class Receiver {
    //我是接收者
    execute() {
        console.log("接收者执行请求");
    }
}
class Command {
    //我是命令对象
    constructor(receiver) {
        this.receiver = receiver;
    }
    execute() {
        // 调用接收者对应接口执行
        console.log("命令对象处理发布者请求");
        this.receiver.execute();
    }
}
class Invoker {
    //我是发布者
    constructor(command) {
        this.command = command;
    }
    invoke() {
        // 调用命令
        console.log("发布者发布请求");
        this.command.execute();
    }
}
const receiver = new Receiver();
const command = new Command(receiver);
const invoker = new Invoker(command);
//? 这样就相当于请求对象包含了执行请求所需的所有信息，包括请求的接收者、请求所需的参数等(嵌套，也就是逐层触发)
console.log(invoker)
invoker.invoke();
